// 单件商品数据
class UIGoods {
    constructor(g) {
        this.data = g;
        this.choose = 0
    }
    // 单个总价
    getTotalPrice() {
        return this.data.price * this.choose
    }
    // 是否选中
    isChoose() {
        return this.choose > 0
    }
    // 单个商品数量增加
    increase() {
        this.choose++;
    }
    // 单个商品数量减少
    decrease() {
        // 如果单个商品数量为0就不再减了
        if (this.choose === 0) return;
        this.choose--;
    }
}

// 整个界面的数据
class UIData {
    constructor() {
        // 新数组数据并且包含单个商品选中
        this.UIGoods = goods.map(good => new UIGoods(good));
        this.deliveryThreshold = 30; // 配送标准，hard code 硬代码
        this.deliveryPrice = 30; // 基础配送费，hard code 硬代码
    }
    // 因为要直接操作当前对象，所以会用当前对象再去调一次UIGoods的一些方法
    // 计算所有商品加起来的总价
    getTotalPrice() {
        return this.UIGoods.reduce((acc, cur) => acc + cur.getTotalPrice(), 0)
    }
    // 增加某件商品的选中数量
    increase(index) {
        this.UIGoods[index].increase()
    }
    // 减少某件商品的选中数量
    decrease(index) {
        this.UIGoods[index].decrease()
    }
    // 得到总共的选择数量
    getTotalChooseNumber() {
        return this.UIGoods.reduce((acc, cur) => acc + cur.choose, 0)
    }
    // 购物车中是否有商品
    hasGoodsInCart() {
        return this.getTotalChooseNumber() > 0
    }
    // // 配送标准剩余
    // residueDeliveryThreshold() {
    //     if (this.getTotalPrice() >= this.deliveryThreshold) return 0
    //     return (this.deliveryThreshold - this.getTotalPrice()).toFixed(2)
    // }
    // 是否跨越配送标准
    isCrossDeliveryThreshold() {
        return this.getTotalPrice() >= this.deliveryThreshold
    }
}
const uiData = new UIData()

console.log(uiData);























